package pri.hillchen.std.simpledemo.javaapi;

/**
 * @author:hillchen
 * @DESCRIPTION: 分布式锁接口
 * @Date: Created in 12:34 2018/3/12 0012.
 */
public interface DistributeLock {
    /**
     * 通过在zookeeper上创建一个跟锁名相同的临时节点来争抢分布式锁，如果创建成功，说明获得锁，这一执行succHandel操作，
     * 如果创建失败则执行failHandel操作，并坚持该临时节点的deleteNode事件，如果监听到deleteNode事件，则触发新一轮的锁争抢。
     * @param lockName
     * @param succHandel
     * @param failHandel
     * @param lockedExceptionHandel
     * @return
     */
    boolean lock(String lockName,LockedSuccHandel succHandel, LockedFailHandel failHandel, LockedExceptionHandel lockedExceptionHandel) ;

    /**
     * 通过删除跟锁同名的临时节点来释放锁
     * @param lockName
     * @return
     */
    boolean unlock(String lockName);
}
